﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SRD.Model.SRD.DTO;
using SRD.Model.SRD.Util;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;
using System.Configuration;

namespace SRD.Model.SRD.DAO
{
    class SubmissaoDAO
    {
        DataClassesSRDDataContext bancoDados = new DataClassesSRDDataContext();
         
         public SubmissaoDAO() 
         {
             
         }
                  
         //metodo de busca pelo id da submissao 
         public SUBMISSAO findByID(SUBMISSAO submissao)
         {
             var resultado = (from s in bancoDados.SUBMISSAOs
                              where s.SUBMISSAO_ID == submissao.SUBMISSAO_ID
                              select s).First();

             return resultado;
         }

         //metodo para busca completa da submissao ordenado
         public IQueryable findAll()
         {
             var resultado = from s in bancoDados.SUBMISSAOs
                             select s;

             return resultado;
         }

         public IQueryable findByProfissional(int profissionalId)
         {
             var resultado = from s in bancoDados.SUBMISSAOs
                             where s.PROFISSIONAL_ID == profissionalId
                             select new
                             {
                                 s.SUBMISSAO_ID,
                                 s.DESCRICAO,
                                 s.PROJETO.NM_PROJETO,
                                 s.DATA
                             };

             return resultado;
         }

        // metodo para iserção da submissao
         public string insert(SUBMISSAO submissao)
         {
             try
             {
                 bancoDados.SUBMISSAOs.InsertOnSubmit(submissao);
                 bancoDados.SubmitChanges();
                 return "Inclusão realizada com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro na inclusão: " + o.Message;
             }
         }

         // metodo para atualização da submissao
         public string update(SUBMISSAO submissao)
         {
             try
             {
                 var submissaoExistente = (from s in bancoDados.SUBMISSAOs
                                       where s.SUBMISSAO_ID == submissao.SUBMISSAO_ID
                                         select s).First();
                 submissaoExistente = submissao;
                 bancoDados.SubmitChanges();
                 return "Atualização realizada com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro na atualização: " + o.Message;
             }
         }

        // metodo para remoção da submissao
         public string delete(SUBMISSAO submissao)
         {
             try
             {
                 var submissaoExitente = (from s in bancoDados.SUBMISSAOs
                                      where s.SUBMISSAO_ID == submissao.SUBMISSAO_ID
                                        select s).First();
                 SUBMISSAO sub = submissaoExitente;
                 bancoDados.SUBMISSAOs.DeleteOnSubmit(sub);
                 bancoDados.SubmitChanges();
                 return "Registro excluído com sucesso!";
             }
             catch (Exception o)
             {
                 return "Houve erro ao excluir: " + o.Message;
             }
         }
    }
}
